
/********************************************************************************************************************************
 * 《C ++ Primer》第五版中文版，读书笔记：按照书中的的示例源码和每一个小章节的课后习题，自己动手写代码实现，作为联系和测试。
 * Date: 2024-03-21 16:09
 * Author: dimon.chen 
 * EMali: 1181302388@qq.com 
 * 
 * 章节: 1.5.1 Sales_item 类
 *      读写 Sales_item 类
 *       
 * 
 ********************************************************************************************************************************/
 

#include <iostream>
#include "Sales_item.h"

/// 
/// 从标准输入读入数据，并写到标准输出
/// 
#if 0
int main(int argc, char *argv[])
{
    Sales_item book;

    //读入 ISBN号，售出的册数 ，以及销售价格
    std::cin >> book;

    //写入 SISBN，售出的册数，总销售额和平均价格
    std::cout << book << std::endl;

    return 0;
}
#endif 



/// 
/// Sales_item 对象的加法
/// 
#if 0
int main(int argc, char *argv[])
{
    Sales_item item1, item2;

    //从标准输入读取数据，存到Sales_item对象
    std::cin >> item1 >> item2;

    //打印一对交易记录
    //打印它们的和
    std::cout << item1 + item2 << std::endl;

    return 0;


}
#endif


/// 
/// 练习1.22：编写程序，读取多个具有相同isbn的销售记录，输出所有记录的和
/// 

#if 0
int main(int argc, char *argv[]){
    Sales_item book;
    Sales_item sum("X-201");


    std::cout << "Please enter you book: ISBN Number Price" << std::endl;
    while(std::cin >> book)
    {
        sum += book;
        std::cout << "Please enter you book: ISBN Number Price" << std::endl;
    }

    //输出 book 数据
    std::cout << sum << std::endl;

    return 0;
}
#endif



/// 
/// 1.5.2 初识成员函数
/// 

#if 0
int main(int argc, char *argv[])
{
    Sales_item item1, item2;

    std::cin >> item1 >> item2;

    //首先检测 item1 和 item2 是否表示相同的书
    if(item1.isbn() == item2.isbn()){
        std::cout << item1 + item2 << std::endl;
        return 0; //表示成功
    }
    else{
        std::cerr << "Data must refer to same ISBN"
                  << std::endl;
        return -1; //表示失败
    }

    return 0;
}
#endif

/// 
/// 练习1.23 编写程序，读取多条销售记录，并统计每个ISBN（每本书）有几条销售记录
/// 

#if 1
int main(int argc, char *argv[])
{
    Sales_item item1, curritem;
    int count = 0;

    if(std::cin >> curritem){ //首先读入一本，确保有数据读入
        count = 1;
        while(std::cin >> item1){
            //检测 item1 和 item2 是否表示相同的书
            if(curritem.isbn() == item1.isbn()){
                count++;
            }
            else{
                std::cout << "Read book ISBN: " << curritem.isbn() << " Count: " << count
                        << std::endl;
                curritem = item1;
                count = 1; //重新初始化count
            }
        }

        //当结束输入时，curritme存储的最后一次输入的图书
        std::cout << "Read book ISBN: " << curritem.isbn() << " Count: " << count
                        << std::endl;
    }
    else{
        std::cout << "No book read!" << std::endl;
    }


    return 0;
}
#endif



